

// ------------------------------------------------------------------------------------------------------
// Rule:  Start
//
// ------------------------------------------------------------------------------------------------------
struct Start : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Start();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  Join
//
// ------------------------------------------------------------------------------------------------------
struct Join : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Join();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  CheckState
//
// ------------------------------------------------------------------------------------------------------
struct CheckState : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    CheckState();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  Delay
//
// ------------------------------------------------------------------------------------------------------
struct Delay : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Delay();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  CheckTaskCount
//
// ------------------------------------------------------------------------------------------------------
struct CheckTaskCount : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    CheckTaskCount();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  Registry
//
// ------------------------------------------------------------------------------------------------------
struct Registry : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    Registry();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  JoinInvalidState
//
// ------------------------------------------------------------------------------------------------------
struct JoinInvalidState : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    JoinInvalidState();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};

// ------------------------------------------------------------------------------------------------------
// Rule:  StartIllegalRoutine
//
// ------------------------------------------------------------------------------------------------------
struct StartIllegalRoutine : public STest::Rule<Os::Test::Task::Tester> {
    // ----------------------------------------------------------------------
    // Construction
    // ----------------------------------------------------------------------

    //! Constructor
    StartIllegalRoutine();

    // ----------------------------------------------------------------------
    // Public member functions
    // ----------------------------------------------------------------------

    //! Precondition
    bool precondition(const Os::Test::Task::Tester& state  //!< The test state
    );

    //! Action
    void action(Os::Test::Task::Tester& state  //!< The test state
    );
};
